<template>
	<view style="height: 100%;">
		<awersome-qr-code text="hello, world阿斯顿发送到发斯蒂芬" size="750rpx" :margin="20" colorDark="#000" colorLight="#bfa">
		</awersome-qr-code>
	</view>
</template>
<script setup>
import Schema from 'async-validator';

const descriptor = {
  name: {
    // 同步自定义验证函数。里面不能作异步校验。
    // 返回true代表校验成功，返回false代表失败
    // 使用自定义验证函数，其它规则都会失效。
    required: true, // 建议显示指定required的值。是否必须校验。
    validator: (rule, value) => {
      // return new Promise(resolve => {
			// 	resolve(value === 'xiaoming')
			// })
			// 也可以这样写
			return value === 'xiaoming'
    }
  },
  age: [
		{
			required: true,
			type: 'number',
		},
		{
			type: 'number',
			required: true,
			min: 1,
			max: 100
		}
	],
  gender: {
    // 异步自定义验证函数，返回Promise
    // 如果被验证的对象没有gender属性，则不会走这个验证函数
    required: false,
    asyncValidator: (rule, value) => {
      return new Promise((resole, reject) => {
        setTimeout(() => {
          resole(value)
        }, 500);
      })
			// 不能这样写
      // return true。
    }
  }
};

const validator = new Schema(descriptor);

// // Promise形式
validator.validate({ name: 'xiaomingdd', age: 12, height: 100 }, {suppressWarning: false, first: false, firstFields: false}).then((fields) => {
  // 验证通过
  console.log('验证成功', fields)
}).catch(({ errors, fields }) => {
  // 验证失败
  console.log('验证失败', fields)
});

// validator.validate({ name: 'xiaoming', age: 5 }, (errors, fields) => {
//   if (errors) {
// 		// 验证失败
//    	return console.log('验证失败', fields)
//   }
// 	// 验证通过
// 	console.log('验证成功', fields)
// });

</script>
<style scoped>

</style>
